#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include "log.hpp"
#include "char_tool.hpp"
#define ENV "url_parameter"    // 环境变量的k值 ，GET方法的请求的参数通过环境变量传给子进程
#define ENV_M "request_method" // 环境变量，请求的方法
#define ENV_L "request_len"    // 环境变量，正文的长度

bool getenv(std::string & str)
{
   
    std::string env = getenv(ENV_M);

    if (env == "GET")
    {
        str = getenv(ENV);
        return true;
    }
    else if (env == "POST")
    {
        int count = atoi(getenv(ENV_L));
        char ch = 'a';
        while (count)
        {
            read(0, &ch, 1);
            str += ch;
            count--;
        }
        return true;
    }
    else
    {
        LOG(WARNING, "子进程没有收到环境变量");
        return false;
    }
}

int main()
{

    std::string str;
    bool i = getenv(str);
    if (!i)
    {
        exit(1);
    }
   //该进程的文件描述符被重定向了，0标准输入是向管道里读，1标准输出是向管道里写
    std::cout<<str;

    std::cerr << "我是子进程，我拿到了请求的内容：" << str << std::endl;

    // std::cerr<<"test_debug: "<<getenv("url_parameter");
    return 0;
}